"""Celery Beat 调度配置模块
提供定时任务的调度配置
"""
from celery.schedules import crontab
from datetime import timedelta
from config.config import get_config

# 获取配置
config = get_config()

# 定义 Beat 调度配置
beat_schedule = {
    # 定时重新加载任务 - 每分钟检查，支持任何频率的cron表达式
    'reload-tasks-every-minute': {
        'task': 'reload_tasks',
        'schedule': crontab(minute='*'),  # 每分钟的0秒执行
        'options': {'queue': 'scheduler'}
    },
    
    # 定时检查任务是否需要触发 - 每分钟检查
    'check-tasks-every-minute': {
        'task': 'check_tasks',
        'schedule': crontab(minute='*'),  # 每分钟的0秒执行
        'options': {'queue': 'scheduler'}
    },
    
    # 清理过期的执行记录
    'cleanup-executions-daily': {
        'task': 'cleanup_executions',
        'schedule': crontab(hour=1, minute=0),  # 每天凌晨1点执行
        'options': {'queue': 'scheduler'}
    },
    
    # 清理过期的任务
    'cleanup-tasks-weekly': {
        'task': 'cleanup_tasks',
        'schedule': crontab(day_of_week=0, hour=2, minute=0),  # 每周日凌晨2点执行
        'options': {'queue': 'scheduler'}
    },
    
    # 清理过期的回收站项目
    'cleanup-recycle-items-daily': {
        'task': 'cleanup_recycle_items',
        'schedule': crontab(hour=3, minute=0),  # 每天凌晨3点执行
        'options': {'queue': 'scheduler'}
    },

}

# 任务路由配置
task_routes = {
    'services.executor.tasks.*': {'queue': 'executor'},
    'services.scheduler.tasks.*': {'queue': 'scheduler'},
    'schedule_task': {'queue': 'scheduler'},  # 明确路由schedule_task到scheduler队列

}

# 默认队列
task_default_queue = 'default'